﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Factory
{
    public partial class ManterRegras : Form
    {
        public ManterRegras()
        {
            InitializeComponent();
        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void mskLimiteChequeDocumento_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {

        }

        private void mskLimite_TextChanged(object sender, EventArgs e)
        {


        }

        private void ManterRegras_Load(object sender, EventArgs e)
        {
            if (Sessao.usuarioLogado == null || Sessao.usuarioLogado.TipoFuncionario == 0)
            {
                MessageBox.Show("Você não tem permissão para manter funcionarios");
                MenuPrincipal menu = new MenuPrincipal();
                menu.Show();
            }

            try
            {
                RegraDAO regraDAO = new RegraDAO();
                Regra regra = regraDAO.ObterRegras();

                if (regra != null)
                {
                    //preenche campos com dados das regras
                    mskLimite.Text = regra.LimiteFactoryClienteComum.ToString("P");
                    mskLimiteEspecial.Text = regra.LimiteFactoryClienteEspecial.ToString("P");
                    mskLimiteChequeCheque.Text = regra.LimitePorCheque.ToString("P");
                    mskLimiteChequeDocumento.Text = regra.LimitePorCpf.ToString("N2");
                    mskPorcentagemEmprestimo.Text = regra.PorcentagemEmprestimo.ToString("P");
                    mskTaxaPorCheque.Text = regra.TaxaCobradaPorCheque.ToString("P");

                    //pega porcentagem de emprestimo para realizar o calculo de quanto a factory pode emprestar
                    double porcentagemEmprestimo = regra.PorcentagemEmprestimo;

                    FactoryDAO factoryDAO = new FactoryDAO();
                    FactoryE factory = factoryDAO.obterDadosFactory();

                    //mostra valor total que a factory possui utilizando string format para valor monetário
                    lblValorTotal.Text = factory.valorAtual.ToString("C");

                    //Calcula quanto sera o valor que a factory podera emprestar
                    lblValorEmprestado.Text = ((factory.valorAtual / 100) * porcentagemEmprestimo).ToString("C");
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        protected override bool ProcessCmdKey(ref Message message, Keys keys)
        {
            switch (keys)
            {
                case Keys.Escape:
                    //Process action here.
                    MenuPrincipal menu = new MenuPrincipal();
                    menu.Show();
                    this.Hide();
                    return false;
            }

            return false;
        }      

        private void mskPorcentagemEmprestimo_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (mskPorcentagemEmprestimo.MaskFull)
                {
                    FactoryDAO factoryDAO = new FactoryDAO();
                    FactoryE factory = factoryDAO.obterDadosFactory();

                    double porcentagemEmprestimo = Convert.ToDouble(mskPorcentagemEmprestimo.Text.Remove(5));

                    lblValorEmprestado.Text = ((factory.valorAtual / 100) * porcentagemEmprestimo).ToString("C");
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnVoltar_Click(object sender, EventArgs e)
        {
            this.Close();
            MenuPrincipal menuprincipal = new MenuPrincipal();
            menuprincipal.Show();
        }

        private void btnAlterar_Click(object sender, EventArgs e)
        {
            try
            {
                RegraDAO regraDAO = new RegraDAO();
                Regra regra = new Regra()
                {
                    LimiteFactoryClienteComum=Convert.ToDouble(mskLimite.Text.Remove(5)),
                    LimitePorCheque = Convert.ToDouble(mskLimiteChequeCheque.Text.Remove(5)),
                    LimitePorCpf = Convert.ToDouble(mskLimiteChequeDocumento.Text),
                    LimiteFactoryClienteEspecial = Convert.ToDouble(mskLimiteEspecial.Text.Remove(5)),
                    PorcentagemEmprestimo = Convert.ToDouble(mskPorcentagemEmprestimo.Text.Remove(5)),
                    TaxaCobradaPorCheque = Convert.ToDouble(mskTaxaPorCheque.Text.Remove(5)),
                };

                int resultado = regraDAO.atualizarRegras(regra);

                if (resultado>0)
                {
                    MessageBox.Show("Regra(s) alterada(s) com sucesso!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                else
                {
                    MessageBox.Show("Problemas ao alterar!", "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

    
    }
}
